<?php
//TODO Z FUTURO: agregar ROLLBACK
class class_stockManejo {
	private $_db; 
	function __construct(){
		$this->config();
	}
	function method_getStock($params, $error){
		$cod_rubro = $params[0];
		$filtro = $params[1];
		$filtro = explode(" ", $params[1]);
		for ($i=0;$i<count($filtro);$i++){
	   		if ($i == 0){
	       		$filtroSQL = " articulos.descripcion LIKE '%" . $filtro[$i] . "%' ";
	   		}
	   		else {
	     		$filtroSQL .= " AND articulos.descripcion LIKE '%" . $filtro[$i] . "%' ";
	   		}
		}
		if($cod_rubro != ""){
			$filtroSQL .= " AND rubros.cod_rubro = '" . $cod_rubro. "'"; 		
		}
		$this->_db->setQuery("SELECT SUM(partidas.cantidad_disponible) AS cantidad_disponible, (SELECT DATE_FORMAT(vencimiento,'%d/%m/%Y') AS vencimiento FROM partidas as vence WHERE vence.cod_articulo = partidas.cod_articulo AND vencimiento != '0000-00-00' ORDER BY vencimiento ASC LIMIT 1) AS vencimiento, articulos.cod_articulo, articulos.descripcion AS articulo, rubros.descripcion AS rubro , marcas.descripcion AS marca FROM partidas LEFT JOIN articulos ON partidas.cod_articulo = articulos.cod_articulo LEFT JOIN marcas ON articulos.cod_marca = marcas.cod_marca LEFT JOIN rubros ON articulos.cod_rubro = rubros.cod_rubro WHERE $filtroSQL GROUP BY articulos.cod_articulo ORDER BY articulo ASC");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 3) . ": " . mysql_error())); return $error; }
		$result="";
		$result->values = array();
		$regs = $this->_db->loadResult();
		$row = array();
    	FOREACH ($regs as $reg)
		{
			array_push($row, $reg->cod_articulo);
			array_push($row, $reg->rubro);
			array_push($row, $reg->articulo);
			array_push($row, $reg->marca);
			array_push($row, $reg->vencimiento);
			array_push($row, $reg->cantidad_disponible);
			
			
			array_push($result->values, $row);
			$row = array();
		}
		return $result;

	}
    function method_getRubros($params, $error){
		$this->_db->setQuery("SELECT cod_rubro AS value, descripcion AS label FROM rubros");
		$this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		$result = $this->_db->loadResult();
		return $result;
		
    }
    function method_insertExtraccion($params, $error){
		$this->_db->setQuery("SELECT cod_partida, cantidad_disponible FROM partidas WHERE cod_articulo = '".$params[0]->cod_articulo."' AND cantidad_disponible!=0 ORDER BY vencimiento DESC, cod_partida ASC ");
		$partidas = $this->_db->loadResult();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		for($i=0;$i<count($partidas);$i++){
			if(($partidas[$i]->cantidad_disponible - $params[0]->cantidad) >= 0){
				// INNODB
				$this->_db->setQuery("INSERT INTO stock_egresos (cod_stock_egreso, cod_partida, cantidad, motivo, fecha_egreso, fecha_insert, dni_usuario) VALUES (NULL, '".$partidas[$i]->cod_partida."', '".$params[0]->cantidad."', '".$params[0]->motivo."', '".$params[0]->fecha_egreso."', NOW(), '".$_SESSION['dni_usuario']."')");
				$this->_db->alter();
				if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
				$this->_db->setQuery("UPDATE partidas SET cantidad_disponible = (cantidad_disponible - " . $params[0]->cantidad. ") WHERE cod_partida = '" . $partidas[$i]->cod_partida. "' LIMIT 1");
				$this->_db->alter();
				if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
				$params[0]->cantidad = 0;
				break;
			}
			else{
				$this->_db->setQuery("INSERT INTO stock_egresos (cod_stock_egreso, cod_partida, cantidad, motivo, fecha_egreso, fecha_insert, dni_usuario) VALUES (NULL, '".$partidas[$i]->cod_partida."', '".$partidas[$i]->cantidad_disponible."', '".$params[0]->motivo."', '".$params[0]->fecha_egreso."', NOW(), '".$_SESSION['dni_usuario']."')");
				$this->_db->alter();
				if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
				$this->_db->setQuery("UPDATE partidas SET cantidad_disponible = 0 WHERE cod_partida = '" . $partidas[$i]->cod_partida. "' LIMIT 1");
				$this->_db->alter();
				if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
				$params[0]->cantidad -= $partidas[$i]->cantidad_disponible;				 
			}
		}
		if($params[0]->cantidad != 0){
			// ROLLBACK
			$error->SetError(JsonRpcError_Unknown, ": Cantidades no disponibles"); return $error;
		}
    }    
	private function config(){
		require_once("conexion.php");
		$this->_db = new DataBase($SERVIDOR,$USUARIO,$PASSWORD,$BASE);
		mysql_query("SET NAMES utf8");
	}
}
?>
